﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
using _3Layer_CuuHangDienMay.DataAccess;
using _3Layer_CuuHangDienMay.BusinessObject;

namespace _3Layer_CuuHangDienMay.BusinessLogic
{
    class ProduceBUS
    {
        private DataProvider dataProvider;
        public ProduceBUS()
        {
            dataProvider = new DataProvider();
        }

        public DataTable GetListProduces(string sMaLoaiSanPham)
        {
            DataTable dt;
            string sql = "SELECT * FROM SANPHAM WHERE MALOAISANPHAM = '" + sMaLoaiSanPham + "'";

            if (sMaLoaiSanPham.Equals("All"))
            {
                sql = "SELECT * FROM SANPHAM";
            }

            try
            {
                dt = dataProvider.ExecuteQuery(sql);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                return null;
            }
            return dt;
        }

        // Thêm 1 san pham
        public bool AddProduce(Produce produce)
        {
            if (!CheckExistsMALOAISANPHAM(produce.MaLoaiSanPham) || CheckExistsMASANPHAM(produce.MaSanPham))
            {
                MessageBox.Show("Vui lòng nhập đúng Mã sản phẩm và Mã loại sản phẩm ", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            else
            {
                string sql = string.Format("INSERT INTO SANPHAM (MASANPHAM, TENSANPHAM, HANGSANXUAT, GIABAN, BAOHANH, XUATXU, SOLUONGTON, MALOAISANPHAM)"
                    + "VALUES ('{0}','{1}','{2}',{3},'{4}','{5}',{6},'{7}')", produce.MaSanPham, produce.TenSanPham, produce.HangSanXuat, produce.GiaBan,
                                produce.BaoHanh, produce.XuatXu, produce.SoLuongTon, produce.MaLoaiSanPham);
                try
                {
                    dataProvider.ExecuteQuery(sql);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return false;
                }
                return true;
            }
        }

        // Sửa 1 san pham
        public bool UpdateProduce(Produce produce)
        {
            if (!CheckExistsMALOAISANPHAM(produce.MaLoaiSanPham))
            {
                MessageBox.Show("Vui lòng nhập đúng Mã sản phẩm ", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            else
            {
                string sql = string.Format("UPDATE SANPHAM SET TENSANPHAM = '{0}', HANGSANXUAT = '{1}', "
                                    + "GIABAN = {2}, BAOHANH = '{3}', XUATXU = '{4}', "
                                    + "SOLUONGTON = {5}, MALOAISANPHAM = '{6}' WHERE MASANPHAM = '{7}' ",
                                    produce.TenSanPham, produce.HangSanXuat, produce.GiaBan, produce.BaoHanh, 
                                    produce.XuatXu, produce.SoLuongTon, produce.MaLoaiSanPham, produce.MaSanPham);
                try
                {
                    dataProvider.ExecuteNonQuery(sql);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return false;
                }
            }
            return true;
        }

        // Xóa 1 san pham
        public bool DeleteProduce(string strMaSanPham)
        {
            if (!CheckExistsMASANPHAM(strMaSanPham))
            {
                MessageBox.Show("Vui lòng chọn đúng mã sản phẩm ", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            else
            {
                string sql = "DELETE FROM SANPHAM WHERE MASANPHAM = '" + strMaSanPham + "' ";
                try
                {
                    dataProvider.ExecuteNonQuery(sql);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return false;
                }
            }
            return true;
        }

        public bool CheckExistsMASANPHAM(string strMaSanPham)
        {
            if (dataProvider.CheckExistValue("SANPHAM", "MASANPHAM", strMaSanPham))
                return true;
            return false;
        }

        public bool CheckExistsMALOAISANPHAM(string strMaLoaiSanPham)
        {
            if (dataProvider.CheckExistValue("LOAISANPHAM", "MALOAISANPHAM", strMaLoaiSanPham))
                return true;
            return false;
        }
    }
}
